package cn.com.wxd.biz.website;

import java.util.List;

import cn.com.wxd.entity.website.CommentInfo;
import cn.com.wxd.common.PageInfo;
import cn.com.wxd.common.data.KeyValue;

/**
 * Title:评论业务逻辑层接口
 * Description:cn.com.wxd.biz.website
 * 
 * Company: Amumu管理平台
 * Copyright: Copyright (c) 2015
 * All right reserved.
 * Created time: 2016-6-20 下午5:10:54
 *
 * @author WangXuDong
 * @version 1.0
 */
public interface CommentService {
	/**
	 * 根据ID获取评论
	 * @return
	 */
	CommentInfo getCommentById(int id);
	/**
	 * 获取所有的评论
	 * @param page 
	 * @param orderKV 
	 * @return
	 */
	List<CommentInfo> getComment(PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 获取文章的评论
	 * @param artId 文章ID
	 * @param page 分页信息
	 * @param orderKV 排序 key字段 value(desc,asc)
	 * @return
	 */
	List<CommentInfo> getCommentListByArtId(int artId, PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 获取文章的评论
	 * @param userId 用户ID
	 * @param page 分页信息
	 * @param orderKV 排序 key字段 value(desc,asc)
	 * @return
	 */
	List<CommentInfo> getCommentListByUserId(int userId, PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 获取某个评论的回复
	 * @param id 评论ID
	 * @param page 分页信息
	 * @param orderKV 排序 key字段 value(desc,asc)
	 * @return
	 */
	List<CommentInfo> getChildComment(int id, PageInfo page, KeyValue<String, String> orderKV);
	/**
	 * 添加一条评论
	 * @param comment 评论对象
	 * @return
	 */
	boolean addComment(CommentInfo comment);
	/**
	 * 设置一条评论的权限
	 * @param id
	 * @param isDisabled true禁用 false启用
	 * @return
	 */
	boolean setDisabled(int id, boolean isDisabled);
	/**
	 * 删除一条评论
	 * @param id
	 * @return
	 */
	boolean removeComment(int id);
	/**
	 * 批量删除评论
	 * @param ids 评论ID数组
	 * @return
	 */
	boolean batchRemoveComment(int[] ids);
	/**
	 * 获取某篇文章的评论数
	 * @param artId 文章ID
	 * @return
	 */
	int selectCommCountByArtId(int artId);
	/**
	 * 获取某个评论的回复数量
	 * @param artId 文章ID
	 * @return
	 */
	int selectCommCountByRepId(int repId);
	/**
	 * 批量添加count个不喜欢评论到数据库
	 * @param commentIds 评论id数组
	 * @param counts 数量 数组
	 * @return
	 */
	boolean addDislikeToDb(int[] commentIds, int[] counts);
	/**
	 * 批量添加count个赞评论到数据库
	 * @param commentIds 评论id数组
	 * @param counts 数量 数组
	 * @return
	 */
	boolean addPraiseToDb(int[] commentIds, int[] counts);
	/**
	 * 添加评论一次举报到数据库
	 * @param commentIds 评论id数组
	 * @param counts 数量 数组
	 */
	boolean addReportToDb(int[] commentIds, int[] counts);
	/**
	 * 添加不喜欢
	 * @param commentIds 评论id数组
	 * @param counts 数量 数组
	 * @return
	 */
	boolean addDislike(int commentId);
	/**
	 * 添加赞
	 * @param commentIds 评论id数组
	 * @param counts 数量 数组
	 * @return
	 */
	boolean addPraise(int commentId);
	/**
	 * 添加举报
	 * @param commentIds 评论id数组
	 * @param counts 数量 数组
	 */
	boolean addReport(int commentId);
	/**
	 * 获取评论被回复的数量
	 * @param commId 评论ID
	 * @return 数量
	 */
	int getCommentReplyCount(int commId);
}
